package lagou.model3;

/**
 * @author liuchangling
 * @date 2021/4/7 4:34 PM
 * @descripion
 */

import java.util.HashMap;

public class HashString {

    private HashMap<Integer, Integer> map1 = new HashMap<>();
    private HashMap<String, Integer> map = new HashMap<>();

    /**
     * 获取'，'出现的位置，存储为HashMap;
     *
     * @param string
     * @return
     */
    public HashMap getNum(String string) {
        int j = 0;
        for (int i = 0; i < string.length(); i++) {
            char c = string.charAt(i);
            if (c == ',') {
                map1.put(++j, i);
            }
        }
        return map1;
    }

    /**
     * 根据map中存储的"，"位置的数字，对字符串进行截取，并通过HashMap存储，并同时校验是否重复
     * @param string
     * @return
     */
    public HashMap getNum2(String string) {

        String stringSon = "";

        for (int i = 0; i <= map1.size(); i++) {
            //当i=0时，截取字符串string中的（0,第一个"，"）间的字符
            if (i == 0) {
                stringSon = string.substring(0, map1.get(1));
            }
            //当i<最后一个逗号出现的位置时，截取字符串string中的（当前逗号位置，下一个逗号位置）间的字符
            else if (i < map1.size()) {
                stringSon = string.substring(map1.get(i) + 1, map1.get(i + 1));
            }
            //截取最后一个逗号出现的位置后的全部字符
            else {
                stringSon = string.substring(map1.get(map1.size()) + 1);

            }
            //判断map中的key是否包含当前截取的字符串，也可以用map.keySet().contains(stringSon)来进行判断，存在即让value自增
            if (map.get(stringSon) != null) {
                int k = map.get(stringSon);
                k++;
                map.put(stringSon, k);
                System.out.println("字符串" + stringSon + "出现了" + k + "次");
            }
            //不存在，肯定为第一次出现，所以直接打印当前字符串出现了1次
            else {
                map.put(stringSon, 1);
                System.out.println("字符串" + stringSon + "出现了" + "1次");
            }
        }
        return map;
    }

    /**
     * 遍历打印HashMap
     */

    public void print() {
        map.forEach((k, v) -> {
            System.out.println(k + " 出现了 " + v + "次");
        });
    }

}
